import app from '@/app'
import install from './install'
import accountStore from '@/store/account'

// 插件列表
const list = {}

// 引导插件
const boot = () => {
  install.forEach(plugin => {
    // 引导路由
    router.push(plugin.routes)
    // 加载语言包
    app.lang.append(plugin.key, plugin.locale)
    // 加入列表
    list[plugin.key] = plugin
  })

  // 路由生效
  router.build()
}

// 载入插件
const load = plugin => {
  plugin.forEach(item => {
    // 插件列表存在
    if(list[item.key()]) {
      // 载入菜单
      item.loadMenu(list[item.key()].menu, list[item.key()].menuHidden)
      // 载入插件
      list[item.key()].plugin = item
      // 引导
      if(list[item.key()].boot) {
        list[item.key()].boot()
      }
    }
  })
}

// 插件路由
const router = {
  routes: [],

  push(route) {
    this.routes.push(...route)
  },

  build() {
    app.router.addRoute({
      path: '/plugin',
      component: () => import('@/views/account/main.vue'),
      children: this.routes,
      meta: {
        guard: accountStore.guard,
        permission: false
      },
    })
  }
}

export default { boot, load }